home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 May: Tool Chest / Developer CD Series May 1996 (Tool Chest) (Apple Computer) (1996).iso / Tool Chest / Development Tools & Languages / Macintosh Common Lisp Related / User Contributions / oodles-of-utils.sea / oodles-of-utils / examples / RSA.lisp < prev    next >
MacBinary  |  1992-12-14  |  11.6 KB  |  [TEXT/CCL2]

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: MacBinary (archive/macBinary).

ConfidenceProgramDetectionMatch TypeSupport
10% dexvert MacBinary (archive/macBinary) fallback Supported
1% dexvert Text File (text/txt) fallback Supported
100% file MacBinary II, inited, Mon Dec 14 08:45:59 1992, modified Mon Dec 14 08:45:59 1992, creator Common Lisp 2, type ASCII, 11247 bytes "RSA.lisp" , at 0x2c6f 442 bytes resource default (weak)
99% file data default
74% TrID Macintosh plain text (MacBinary) default
25% TrID MacBinary 2 default (weak)
100% siegfried fmt/1762 MacBinary (II) default
100% lsar MacBinary default


id metadata
keyvalue
macFileType[TEXT]
macFileCreator[CCL2]



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 08 52 53 41 2e 6c 69 | 73 70 00 00 00 00 00 00 |..RSA.li|sp......|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 43 43 4c | 32 01 00 00 00 00 00 00 |.TEXTCCL|2.......|
|00000050| 00 00 00 00 00 2b ef 00 | 00 01 ba a7 52 40 97 a7 |.....+..|....R@..|
|00000060| 52 40 97 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |R@......|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 03 93 00 00 |........|........|
|00000080| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;|
|00000090| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;|
|000000a0| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;|
|000000b0| 3b 3b 0d 3b 3b 52 53 41 | 0d 3b 3b 0d 3b 3b 20 54 |;;.;;RSA|.;;.;; T|
|000000c0| 68 65 20 61 6c 67 6f 72 | 69 74 68 6d 73 20 63 6f |he algor|ithms co|
|000000d0| 6d 65 20 66 72 6f 6d 20 | 74 77 6f 20 70 61 70 65 |me from |two pape|
|000000e0| 72 73 0d 3b 3b 0d 3b 3b | 20 52 2e 4c 2e 20 52 69 |rs.;;.;;| R.L. Ri|
|000000f0| 76 65 73 74 2c 20 41 2e | 20 53 68 61 6d 69 72 2c |vest, A.| Shamir,|
|00000100| 20 61 6e 64 20 4c 2e 20 | 41 64 65 6c 6d 61 6e 0d | and L. |Adelman.|
|00000110| 3b 3b 20 41 20 4d 65 74 | 68 6f 64 20 66 6f 72 20 |;; A Met|hod for |
|00000120| 4f 62 74 61 69 6e 69 6e | 67 20 44 69 67 69 74 61 |Obtainin|g Digita|
|00000130| 6c 20 53 69 67 6e 61 74 | 75 72 65 73 20 61 6e 64 |l Signat|ures and|
|00000140| 20 50 75 62 6c 69 63 20 | 4b 65 79 20 43 72 79 70 | Public |Key Cryp|
|00000150| 74 6f 2d 53 79 73 74 65 | 6d 73 0d 3b 3b 20 43 41 |to-Syste|ms.;; CA|
|00000160| 43 4d 2c 20 28 31 39 37 | 38 29 2c 20 70 70 2e 31 |CM, (197|8), pp.1|
|00000170| 32 30 2d 31 32 36 0d 3b | 3b 0d 3b 3b 20 52 2e 20 |20-126.;|;.;; R. |
|00000180| 53 6f 6c 6f 76 61 79 20 | 61 6e 64 20 56 2e 20 53 |Solovay |and V. S|
|00000190| 74 72 61 73 73 65 6e 0d | 3b 3b 20 41 20 46 61 73 |trassen.|;; A Fas|
|000001a0| 74 20 4d 6f 6e 74 65 2d | 43 61 72 6c 6f 20 54 65 |t Monte-|Carlo Te|
|000001b0| 73 74 20 66 6f 72 20 50 | 72 69 6d 61 6c 69 74 79 |st for P|rimality|
|000001c0| 0d 3b 3b 20 53 49 41 4d | 20 4a 6f 75 72 6e 61 6c |.;; SIAM| Journal|
|000001d0| 20 6f 6e 20 43 6f 6d 70 | 75 74 69 6e 67 2c 20 28 | on Comp|uting, (|
|000001e0| 31 39 37 37 29 2c 20 70 | 70 2e 38 34 2d 38 35 2e |1977), p|p.84-85.|
|000001f0| 0d 0d 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |..;;;;;;|;;;;;;;;|
|00000200| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;|
|00000210| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;|
|00000220| 3b 3b 3b 3b 0d 0d 3b 3b | 3b 54 68 69 73 20 66 75 |;;;;..;;|;This fu|
|00000230| 6e 63 74 69 6f 6e 20 52 | 53 41 20 65 6e 63 72 79 |nction R|SA encry|
|00000240| 70 74 73 20 74 68 65 20 | 73 70 65 63 69 66 69 65 |pts the |specifie|
|00000250| 64 20 73 74 72 69 6e 67 | 0d 28 64 65 66 75 6e 20 |d string|.(defun |
|00000260| 52 53 41 2d 65 6e 63 6f | 64 65 2d 73 74 72 69 6e |RSA-enco|de-strin|
|00000270| 67 20 28 69 6e 2d 73 74 | 72 69 6e 67 20 70 75 62 |g (in-st|ring pub|
|00000280| 6c 69 63 2d 6b 65 79 29 | 0d 20 20 28 77 69 74 68 |lic-key)|. (with|
|00000290| 2d 69 6e 70 75 74 2d 66 | 72 6f 6d 2d 73 74 72 69 |-input-f|rom-stri|
|000002a0| 6e 67 20 28 69 6e 20 69 | 6e 2d 73 74 72 69 6e 67 |ng (in i|n-string|
|000002b0| 29 0d 20 20 20 20 28 77 | 69 74 68 2d 6f 75 74 70 |). (w|ith-outp|
|000002c0| 75 74 2d 74 6f 2d 73 74 | 72 69 6e 67 20 28 6f 75 |ut-to-st|ring (ou|
|000002d0| 74 29 0d 20 20 20 20 20 | 20 28 52 53 41 2d 65 6e |t). | (RSA-en|
|000002e0| 63 6f 64 65 2d 73 74 72 | 65 61 6d 20 69 6e 20 6f |code-str|eam in o|
|000002f0| 75 74 20 70 75 62 6c 69 | 63 2d 6b 65 79 29 29 29 |ut publi|c-key)))|
|00000300| 29 0d 20 20 20 20 20 20 | 20 20 0d 0d 3b 3b 3b 54 |). | ..;;;T|
|00000310| 68 69 73 20 66 75 6e 63 | 74 69 6f 6e 20 52 53 41 |his func|tion RSA|
|00000320| 20 64 65 63 72 79 70 74 | 73 20 74 68 65 20 73 70 | decrypt|s the sp|
|00000330| 65 63 69 66 69 65 64 20 | 73 74 72 69 6e 67 0d 28 |ecified |string.(|
|00000340| 64 65 66 75 6e 20 52 53 | 41 2d 64 65 63 6f 64 65 |defun RS|A-decode|
|00000350| 2d 73 74 72 69 6e 67 20 | 28 69 6e 2d 73 74 72 69 |-string |(in-stri|
|00000360| 6e 67 20 70 72 69 76 61 | 74 65 2d 6b 65 79 29 0d |ng priva|te-key).|
|00000370| 20 20 28 77 69 74 68 2d | 69 6e 70 75 74 2d 66 72 | (with-|input-fr|
|00000380| 6f 6d 2d 73 74 72 69 6e | 67 20 28 69 6e 20 69 6e |om-strin|g (in in|
|00000390| 2d 73 74 72 69 6e 67 29 | 0d 20 20 20 20 28 77 69 |-string)|. (wi|
|000003a0| 74 68 2d 6f 75 74 70 75 | 74 2d 74 6f 2d 73 74 72 |th-outpu|t-to-str|
|000003b0| 69 6e 67 20 28 6f 75 74 | 29 0d 20 20 20 20 20 20 |ing (out|). |
|000003c0| 28 52 53 41 2d 64 65 63 | 6f 64 65 2d 73 74 72 65 |(RSA-dec|ode-stre|
|000003d0| 61 6d 20 69 6e 20 6f 75 | 74 20 70 72 69 76 61 74 |am in ou|t privat|
|000003e0| 65 2d 6b 65 79 29 29 29 | 29 0d 0d 0d 3b 3b 3b 3b |e-key)))|)...;;;;|
|000003f0| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;|
|00000400| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;|
|00000410| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 0d 0d |;;;;;;;;|;;;;;;..|
|00000420| 3b 3b 3b 54 68 69 73 20 | 66 75 6e 63 74 69 6f 6e |;;;This |function|
|00000430| 20 52 53 41 20 65 6e 63 | 72 79 70 74 73 20 74 68 | RSA enc|rypts th|
|00000440| 65 20 73 70 65 63 69 66 | 69 65 64 20 66 69 6c 65 |e specif|ied file|
|00000450| 0d 28 64 65 66 75 6e 20 | 52 53 41 2d 65 6e 63 6f |.(defun |RSA-enco|
|00000460| 64 65 2d 66 69 6c 65 20 | 28 69 6e 2d 70 61 74 68 |de-file |(in-path|
|00000470| 6e 61 6d 65 20 6f 75 74 | 2d 70 61 74 68 6e 61 6d |name out|-pathnam|
|00000480| 65 20 70 75 62 6c 69 63 | 2d 6b 65 79 29 0d 20 20 |e public|-key). |
|00000490| 28 77 69 74 68 2d 6f 70 | 65 6e 2d 66 69 6c 65 20 |(with-op|en-file |
|000004a0| 28 69 6e 20 69 6e 2d 70 | 61 74 68 6e 61 6d 65 0d |(in in-p|athname.|
|000004b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000004c0| 20 20 20 20 20 20 3a 64 | 69 72 65 63 74 69 6f 6e | :d|irection|
|000004d0| 20 3a 69 6e 70 75 74 29 | 0d 20 20 20 20 28 77 69 | :input)|. (wi|
|000004e0| 74 68 2d 6f 70 65 6e 2d | 66 69 6c 65 20 28 6f 75 |th-open-|file (ou|
|000004f0| 74 20 6f 75 74 2d 70 61 | 74 68 6e 61 6d 65 0d 20 |t out-pa|thname. |
|00000500| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000510| 20 20 20 20 20 20 20 20 | 3a 64 69 72 65 63 74 69 | |:directi|
|00000520| 6f 6e 20 3a 6f 75 74 70 | 75 74 0d 20 20 20 20 20 |on :outp|ut. |
|00000530| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000540| 20 20 20 20 3a 69 66 2d | 65 78 69 73 74 73 20 3a | :if-|exists :|
|00000550| 72 65 6e 61 6d 65 2d 61 | 6e 64 2d 64 65 6c 65 74 |rename-a|nd-delet|
|00000560| 65 20 0d 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |e . | |
|00000570| 20 20 20 20 20 20 20 20 | 20 20 20 20 3a 69 66 2d | | :if-|
|00000580| 64 6f 65 73 2d 6e 6f 74 | 2d 65 78 69 73 74 20 3a |does-not|-exist :|
|00000590| 63 72 65 61 74 65 29 0d | 20 20 20 20 20 20 28 52 |create).| (R|
|000005a0| 53 41 2d 65 6e 63 6f 64 | 65 2d 73 74 72 65 61 6d |SA-encod|e-stream|
|000005b0| 20 69 6e 20 6f 75 74 20 | 70 75 62 6c 69 63 2d 6b | in out |public-k|
|000005c0| 65 79 29 29 29 29 0d 20 | 20 20 20 20 20 20 20 0d |ey)))). | .|
|000005d0| 0d 3b 3b 3b 54 68 69 73 | 20 66 75 6e 63 74 69 6f |.;;;This| functio|
|000005e0| 6e 20 52 53 41 20 64 65 | 63 72 79 70 74 73 20 74 |n RSA de|crypts t|
|000005f0| 68 65 20 73 70 65 63 69 | 66 69 65 64 20 66 69 6c |he speci|fied fil|
|00000600| 65 0d 28 64 65 66 75 6e | 20 52 53 41 2d 64 65 63 |e.(defun| RSA-dec|
|00000610| 6f 64 65 2d 66 69 6c 65 | 20 28 69 6e 2d 70 61 74 |ode-file| (in-pat|
|00000620| 68 6e 61 6d 65 20 6f 75 | 74 2d 70 61 74 68 6e 61 |hname ou|t-pathna|
|00000630| 6d 65 20 70 72 69 76 61 | 74 65 2d 6b 65 79 29 0d |me priva|te-key).|
|00000640| 20 20 28 77 69 74 68 2d | 6f 70 65 6e 2d 66 69 6c | (with-|open-fil|
|00000650| 65 20 28 69 6e 20 69 6e | 2d 70 61 74 68 6e 61 6d |e (in in|-pathnam|
|00000660| 65 0d 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |e. | |
|00000670| 20 20 20 20 20 20 20 20 | 3a 64 69 72 65 63 74 69 | |:directi|
|00000680| 6f 6e 20 3a 69 6e 70 75 | 74 29 0d 20 20 20 20 28 |on :inpu|t). (|
|00000690| 77 69 74 68 2d 6f 70 65 | 6e 2d 66 69 6c 65 20 28 |with-ope|n-file (|
|000006a0| 6f 75 74 20 6f 75 74 2d | 70 61 74 68 6e 61 6d 65 |out out-|pathname|
|000006b0| 0d 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | |
|000006c0| 20 20 20 20 20 20 20 20 | 20 20 3a 64 69 72 65 63 | | :direc|
|000006d0| 74 69 6f 6e 20 3a 6f 75 | 74 70 75 74 0d 20 20 20 |tion :ou|tput. |
|000006e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000006f0| 20 20 20 20 20 20 3a 69 | 66 2d 65 78 69 73 74 73 | :i|f-exists|
|00000700| 20 3a 72 65 6e 61 6d 65 | 2d 61 6e 64 2d 64 65 6c | :rename|-and-del|
|00000710| 65 74 65 0d 20 20 20 20 | 20 20 20 20 20 20 20 20 |ete. | |
|00000720| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 3a 69 66 | | :if|
|00000730| 2d 64 6f 65 73 2d 6e 6f | 74 2d 65 78 69 73 74 20 |-does-no|t-exist |
|00000740| 3a 63 72 65 61 74 65 29 | 0d 20 20 20 20 20 20 28 |:create)|. (|
|00000750| 52 53 41 2d 64 65 63 6f | 64 65 2d 73 74 72 65 61 |RSA-deco|de-strea|
|00000760| 6d 20 69 6e 20 6f 75 74 | 20 70 72 69 76 61 74 65 |m in out| private|
|00000770| 2d 6b 65 79 29 29 29 29 | 0d 20 20 20 20 20 0d 3b |-key))))|. .;|
|00000780| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;|
|00000790| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;|
|000007a0| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;|
|000007b0| 3b 0d 0d 3b 3b 3b 54 68 | 69 73 20 66 75 6e 63 74 |;..;;;Th|is funct|
|000007c0| 69 6f 6e 20 52 53 41 20 | 65 6e 63 72 79 70 74 73 |ion RSA |encrypts|
|000007d0| 20 74 68 65 20 73 70 65 | 63 69 66 69 65 64 20 69 | the spe|cified i|
|000007e0| 6e 70 75 74 20 73 74 72 | 65 61 6d 0d 3b 3b 3b 20 |nput str|eam.;;; |
|000007f0| 61 6e 64 20 70 75 74 73 | 20 74 68 65 20 65 6e 63 |and puts| the enc|
|00000800| 72 79 70 74 65 64 20 64 | 61 74 61 20 6f 6e 74 6f |rypted d|ata onto|
|00000810| 20 74 68 65 20 73 70 65 | 63 69 66 69 65 64 20 6f | the spe|cified o|
|00000820| 75 74 70 75 74 20 73 74 | 72 65 61 6d 0d 28 64 65 |utput st|ream.(de|
|00000830| 66 75 6e 20 52 53 41 2d | 65 6e 63 6f 64 65 2d 73 |fun RSA-|encode-s|
|00000840| 74 72 65 61 6d 20 28 69 | 6e 2d 73 74 72 65 61 6d |tream (i|n-stream|
|00000850| 20 6f 75 74 2d 73 74 72 | 65 61 6d 20 70 75 62 6c | out-str|eam publ|
|00000860| 69 63 2d 6b 65 79 29 0d | 20 20 28 6c 65 74 2a 20 |ic-key).| (let* |
|00000870| 28 28 62 6c 6f 63 6b 2d | 73 69 7a 65 20 28 31 2d |((block-|size (1-|
|00000880| 20 28 52 53 41 2d 62 6c | 6f 63 6b 2d 73 69 7a 65 | (RSA-bl|ock-size|
|00000890| 20 70 75 62 6c 69 63 2d | 6b 65 79 29 29 29 0d 20 | public-|key))). |
|000008a0| 20 20 20 20 20 20 20 20 | 28 62 6c 6f 63 6b 20 28 | |(block (|
|000008b0| 6d 61 6b 65 2d 73 74 72 | 69 6e 67 20 62 6c 6f 63 |make-str|ing bloc|
|000008c0| 6b 2d 73 69 7a 65 29 29 | 0d 20 20 20 20 20 20 20 |k-size))|. |
|000008d0| 20 20 28 69 20 30 29 29 | 0d 20 20 20 20 28 6c 6f | (i 0))|. (lo|
|000008e0| 6f 70 0d 20 20 20 20 20 | 20 28 77 68 65 6e 20 28 |op. | (when (|
|000008f0| 6e 75 6c 6c 20 28 6c 69 | 73 74 65 6e 20 69 6e 2d |null (li|sten in-|
|00000900| 73 74 72 65 61 6d 29 29 | 20 28 72 65 74 75 72 6e |stream))| (return|
|00000910| 20 69 29 29 0d 20 20 20 | 20 20 20 28 69 6e 63 66 | i)). | (incf|
|00000920| 20 69 29 0d 20 20 20 20 | 20 20 28 64 6f 74 69 6d | i). | (dotim|
|00000930| 65 73 20 28 69 20 62 6c | 6f 63 6b 2d 73 69 7a 65 |es (i bl|ock-size|
|00000940| 29 0d 20 20 20 20 20 20 | 20 20 28 73 65 74 66 20 |). | (setf |
|00000950| 28 63 68 61 72 20 62 6c | 6f 63 6b 20 69 29 20 28 |(char bl|ock i) (|
|00000960| 72 65 61 64 2d 63 68 61 | 72 20 69 6e 2d 73 74 72 |read-cha|r in-str|
|00000970| 65 61 6d 20 6e 69 6c 20 | 28 63 6f 64 65 2d 63 68 |eam nil |(code-ch|
|00000980| 61 72 20 30 29 29 29 29 | 0d 20 20 20 20 20 20 28 |ar 0))))|. (|
|00000990| 70 72 69 6e 63 20 28 52 | 53 41 2d 65 6e 63 6f 64 |princ (R|SA-encod|
|000009a0| 65 2d 62 6c 6f 63 6b 20 | 62 6c 6f 63 6b 20 70 75 |e-block |block pu|
|000009b0| 62 6c 69 63 2d 6b 65 79 | 29 20 6f 75 74 2d 73 74 |blic-key|) out-st|
|000009c0| 72 65 61 6d 29 29 29 29 | 0d 0d 0d 3b 3b 3b 54 68 |ream))))|...;;;Th|
|000009d0| 69 73 20 66 75 6e 63 74 | 69 6f 6e 20 52 53 41 20 |is funct|ion RSA |
|000009e0| 64 65 63 72 79 70 74 73 | 20 74 68 65 20 73 70 65 |decrypts| the spe|
|000009f0| 63 69 66 69 65 64 20 69 | 6e 70 75 74 20 73 74 72 |cified i|nput str|
|00000a00| 65 61 6d 0d 3b 3b 3b 20 | 61 6e 64 20 70 75 74 73 |eam.;;; |and puts|
|00000a10| 20 74 68 65 20 64 65 63 | 72 79 70 74 65 64 20 64 | the dec|rypted d|
|00000a20| 61 74 61 20 6f 6e 74 6f | 20 74 68 65 20 73 70 65 |ata onto| the spe|
|00000a30| 63 69 66 69 65 64 20 6f | 75 74 70 75 74 20 73 74 |cified o|utput st|
|00000a40| 72 65 61 6d 0d 28 64 65 | 66 75 6e 20 52 53 41 2d |ream.(de|fun RSA-|
|00000a50| 64 65 63 6f 64 65 2d 73 | 74 72 65 61 6d 20 28 69 |decode-s|tream (i|
|00000a60| 6e 2d 73 74 72 65 61 6d | 20 6f 75 74 2d 73 74 72 |n-stream| out-str|
|00000a70| 65 61 6d 20 70 72 69 76 | 61 74 65 2d 6b 65 79 29 |eam priv|ate-key)|
|00000a80| 0d 20 20 28 6c 65 74 2a | 20 28 28 62 6c 6f 63 6b |. (let*| ((block|
|00000a90| 2d 73 69 7a 65 20 28 52 | 53 41 2d 62 6c 6f 63 6b |-size (R|SA-block|
|00000aa0| 2d 73 69 7a 65 20 70 72 | 69 76 61 74 65 2d 6b 65 |-size pr|ivate-ke|
|00000ab0| 79 29 29 0d 20 20 20 20 | 20 20 20 20 20 28 62 6c |y)). | (bl|
|00000ac0| 6f 63 6b 20 28 6d 61 6b | 65 2d 73 74 72 69 6e 67 |ock (mak|e-string|
|00000ad0| 20 62 6c 6f 63 6b 2d 73 | 69 7a 65 29 29 0d 20 20 | block-s|ize)). |
|00000ae0| 20 20 20 20 20 20 20 28 | 69 20 30 29 29 0d 20 20 | (|i 0)). |
|00000af0| 20 20 28 6c 6f 6f 70 0d | 20 20 20 20 20 20 28 77 | (loop.| (w|
|00000b00| 68 65 6e 20 28 6e 75 6c | 6c 20 28 6c 69 73 74 65 |hen (nul|l (liste|
|00000b10| 6e 20 69 6e 2d 73 74 72 | 65 61 6d 29 29 20 28 72 |n in-str|eam)) (r|
|00000b20| 65 74 75 72 6e 20 69 29 | 29 0d 20 20 20 20 20 20 |eturn i)|). |
|00000b30| 28 69 6e 63 66 20 69 29 | 0d 20 20 20 20 20 20 28 |(incf i)|. (|
|00000b40| 64 6f 74 69 6d 65 73 20 | 28 69 20 62 6c 6f 63 6b |dotimes |(i block|
|00000b50| 2d 73 69 7a 65 29 0d 20 | 20 20 20 20 20 20 20 28 |-size). | (|
|00000b60| 73 65 74 66 20 28 63 68 | 61 72 20 62 6c 6f 63 6b |setf (ch|ar block|
|00000b70| 20 69 29 20 28 72 65 61 | 64 2d 63 68 61 72 20 69 | i) (rea|d-char i|
|00000b80| 6e 2d 73 74 72 65 61 6d | 20 74 29 29 29 0d 20 20 |n-stream| t))). |
|00000b90| 20 20 20 20 28 70 72 69 | 6e 63 20 28 52 53 41 2d | (pri|nc (RSA-|
|00000ba0| 64 65 63 6f 64 65 2d 62 | 6c 6f 63 6b 20 62 6c 6f |decode-b|lock blo|
|00000bb0| 63 6b 20 70 72 69 76 61 | 74 65 2d 6b 65 79 29 20 |ck priva|te-key) |
|00000bc0| 6f 75 74 2d 73 74 72 65 | 61 6d 29 29 29 29 0d 0d |out-stre|am))))..|
|00000bd0| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;|
|00000be0| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;|
|00000bf0| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;|
|00000c00| 3b 3b 0d 0d 3b 3b 3b 54 | 68 69 73 20 66 75 6e 63 |;;..;;;T|his func|
|00000c10| 74 69 6f 6e 20 52 53 41 | 20 65 6e 63 72 79 70 74 |tion RSA| encrypt|
|00000c20| 73 20 61 20 73 69 6e 67 | 6c 65 20 62 6c 6f 63 6b |s a sing|le block|
|00000c30| 20 6f 66 20 6d 65 73 73 | 61 67 65 0d 28 64 65 66 | of mess|age.(def|
|00000c40| 75 6e 20 52 53 41 2d 65 | 6e 63 6f 64 65 2d 62 6c |un RSA-e|ncode-bl|
|00000c50| 6f 63 6b 20 28 73 74 72 | 69 6e 67 20 70 75 62 6c |ock (str|ing publ|
|00000c60| 69 63 2d 6b 65 79 29 0d | 20 20 28 6c 65 74 20 28 |ic-key).| (let (|
|00000c70| 28 62 6c 6f 63 6b 2d 73 | 69 7a 65 20 28 52 53 41 |(block-s|ize (RSA|
|00000c80| 2d 62 6c 6f 63 6b 2d 73 | 69 7a 65 20 70 75 62 6c |-block-s|ize publ|
|00000c90| 69 63 2d 6b 65 79 29 29 | 29 0d 20 20 20 20 28 75 |ic-key))|). (u|
|00000ca0| 6e 6c 65 73 73 20 28 3c | 20 28 6c 65 6e 67 74 68 |nless (<| (length|
|00000cb0| 20 73 74 72 69 6e 67 29 | 20 62 6c 6f 63 6b 2d 73 | string)| block-s|
|00000cc0| 69 7a 65 29 0d 20 20 20 | 20 20 20 28 65 72 72 6f |ize). | (erro|
|00000cd0| 72 20 22 73 74 72 69 6e | 67 20 74 6f 6f 20 6c 6f |r "strin|g too lo|
|00000ce0| 6e 67 20 7e 61 20 3e 3d | 20 7e 61 20 74 6f 20 62 |ng ~a >=| ~a to b|
|00000cf0| 65 20 63 6f 72 72 65 63 | 74 6c 79 20 65 6e 63 6f |e correc|tly enco|
|00000d00| 64 65 64 22 20 28 6c 65 | 6e 67 74 68 20 73 74 72 |ded" (le|ngth str|
|00000d10| 69 6e 67 29 20 62 6c 6f | 63 6b 2d 73 69 7a 65 29 |ing) blo|ck-size)|
|00000d20| 29 0d 20 20 20 20 28 69 | 6e 74 2d 74 6f 2d 73 74 |). (i|nt-to-st|
|00000d30| 72 69 6e 67 20 28 65 78 | 70 74 2d 6d 6f 64 20 28 |ring (ex|pt-mod (|
|00000d40| 73 74 72 69 6e 67 2d 74 | 6f 2d 69 6e 74 20 73 74 |string-t|o-int st|
|00000d50| 72 69 6e 67 29 20 28 73 | 65 63 6f 6e 64 20 70 75 |ring) (s|econd pu|
|00000d60| 62 6c 69 63 2d 6b 65 79 | 29 20 28 66 69 72 73 74 |blic-key|) (first|
|00000d70| 20 70 75 62 6c 69 63 2d | 6b 65 79 29 29 0d 20 20 | public-|key)). |
|00000d80| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000d90| 20 62 6c 6f 63 6b 2d 73 | 69 7a 65 29 29 29 0d 0d | block-s|ize)))..|
|00000da0| 3b 3b 3b 54 68 69 73 20 | 66 75 6e 63 74 69 6f 6e |;;;This |function|
|00000db0| 20 52 53 41 20 64 65 63 | 72 79 70 74 73 20 61 20 | RSA dec|rypts a |
|00000dc0| 73 69 6e 67 6c 65 20 62 | 6c 6f 63 6b 20 6f 66 20 |single b|lock of |
|00000dd0| 6d 65 73 73 61 67 65 0d | 28 64 65 66 75 6e 20 52 |message.|(defun R|
|00000de0| 53 41 2d 64 65 63 6f 64 | 65 2d 62 6c 6f 63 6b 20 |SA-decod|e-block |
|00000df0| 28 73 74 72 69 6e 67 20 | 70 72 69 76 61 74 65 2d |(string |private-|
|00000e00| 6b 65 79 29 0d 20 28 69 | 6e 74 2d 74 6f 2d 73 74 |key). (i|nt-to-st|
|00000e10| 72 69 6e 67 20 28 65 78 | 70 74 2d 6d 6f 64 20 28 |ring (ex|pt-mod (|
|00000e20| 73 74 72 69 6e 67 2d 74 | 6f 2d 69 6e 74 20 73 74 |string-t|o-int st|
|00000e30| 72 69 6e 67 29 20 28 73 | 65 63 6f 6e 64 20 70 72 |ring) (s|econd pr|
|00000e40| 69 76 61 74 65 2d 6b 65 | 79 29 20 28 66 69 72 73 |ivate-ke|y) (firs|
|00000e50| 74 20 70 72 69 76 61 74 | 65 2d 6b 65 79 29 29 29 |t privat|e-key)))|
|00000e60| 29 0d 0d 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |)..;;;;;|;;;;;;;;|
|00000e70| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;|
|00000e80| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;|
|00000e90| 3b 3b 3b 3b 3b 0d 0d 3b | 3b 3b 52 65 74 75 72 6e |;;;;;..;|;;Return|
|00000ea0| 73 20 74 68 65 20 65 6e | 63 72 79 70 74 69 6f 6e |s the en|cryption|
|00000eb0| 20 62 6c 6f 63 6b 20 73 | 69 7a 65 20 69 6e 20 63 | block s|ize in c|
|00000ec0| 68 61 72 61 63 74 65 72 | 20 66 6f 72 20 74 68 65 |haracter| for the|
|00000ed0| 20 73 70 65 63 69 66 69 | 65 64 20 6b 65 79 0d 28 | specifi|ed key.(|
|00000ee0| 64 65 66 75 6e 20 52 53 | 41 2d 62 6c 6f 63 6b 2d |defun RS|A-block-|
|00000ef0| 73 69 7a 65 20 28 6b 65 | 79 29 0d 20 20 28 70 72 |size (ke|y). (pr|
|00000f00| 6f 67 31 20 28 63 65 69 | 6c 69 6e 67 20 28 69 6e |og1 (cei|ling (in|
|00000f10| 74 65 67 65 72 2d 6c 65 | 6e 67 74 68 20 28 66 69 |teger-le|ngth (fi|
|00000f20| 72 73 74 20 6b 65 79 29 | 29 20 38 29 29 29 0d 0d |rst key)|) 8)))..|
|00000f30| 0d 3b 3b 3b 47 69 76 65 | 20 61 20 70 61 69 72 20 |.;;;Give| a pair |
|00000f40| 6f 66 20 70 72 69 6d 65 | 73 20 74 68 69 73 20 66 |of prime|s this f|
|00000f50| 75 6e 63 74 69 6f 6e 20 | 67 65 6e 65 72 61 74 65 |unction |generate|
|00000f60| 73 20 61 6e 20 52 53 41 | 20 6b 65 79 20 70 61 69 |s an RSA| key pai|
|00000f70| 72 20 66 72 6f 6d 20 74 | 68 65 6d 2e 0d 3b 3b 3b |r from t|hem..;;;|
|00000f80| 49 74 20 72 65 74 75 72 | 6e 73 20 32 20 76 61 6c |It retur|ns 2 val|
|00000f90| 75 65 73 2c 20 74 68 65 | 20 70 75 62 6c 69 63 20 |ues, the| public |
|00000fa0| 6b 65 79 20 61 6e 64 20 | 70 72 69 76 61 74 65 20 |key and |private |
|00000fb0| 6b 65 79 2e 0d 3b 3b 3b | 45 61 63 68 20 6b 65 79 |key..;;;|Each key|
|00000fc0| 20 69 73 20 61 20 6c 69 | 73 74 20 6f 66 20 32 20 | is a li|st of 2 |
|00000fd0| 6e 75 6d 62 65 72 73 20 | 2d 20 74 68 65 20 32 6e |numbers |- the 2n|
|00000fe0| 64 20 6e 75 6d 62 65 72 | 20 69 73 20 61 63 74 75 |d number| is actu|
|00000ff0| 61 6c 6c 79 20 74 68 65 | 20 6b 65 79 2e 0d 28 64 |ally the| key..(d|
|00001000| 65 66 75 6e 20 52 53 41 | 2d 67 65 6e 2d 6b 65 79 |efun RSA|-gen-key|
|00001010| 73 20 28 70 72 69 6d 65 | 2d 31 20 70 72 69 6d 65 |s (prime|-1 prime|
|00001020| 2d 32 29 0d 20 20 28 6c | 65 74 2a 20 28 28 70 20 |-2). (l|et* ((p |
|00001030| 70 72 69 6d 65 2d 31 29 | 0d 20 20 20 20 20 20 20 |prime-1)|. |
|00001040| 20 20 28 71 20 70 72 69 | 6d 65 2d 32 29 0d 20 20 | (q pri|me-2). |
|00001050| 20 20 20 20 20 20 20 28 | 70 68 69 20 28 2a 20 28 | (|phi (* (|
|00001060| 31 2d 20 70 29 20 28 31 | 2d 20 71 29 29 29 0d 20 |1- p) (1|- q))). |
|00001070| 20 20 20 20 20 20 20 20 | 28 70 72 69 2d 6b 65 79 | |(pri-key|
|00001080| 20 28 52 53 41 2d 63 68 | 6f 6f 73 65 2d 70 72 69 | (RSA-ch|oose-pri|
|00001090| 76 61 74 65 2d 6b 65 79 | 20 70 20 71 20 70 68 69 |vate-key| p q phi|
|000010a0| 29 29 0d 20 20 20 20 20 | 20 20 20 20 28 70 75 62 |)). | (pub|
|000010b0| 2d 6b 65 79 20 28 6d 75 | 6c 74 69 70 6c 69 63 61 |-key (mu|ltiplica|
|000010c0| 74 69 76 65 2d 69 6e 76 | 65 72 73 65 20 70 72 69 |tive-inv|erse pri|
|000010d0| 2d 6b 65 79 20 70 68 69 | 29 29 0d 20 20 20 20 20 |-key phi|)). |
|000010e0| 20 20 20 20 28 6d 73 67 | 2d 73 69 7a 65 20 28 2a | (msg|-size (*|
|000010f0| 20 70 20 71 29 29 29 0d | 20 20 20 20 28 76 61 6c | p q))).| (val|
|00001100| 75 65 73 20 28 6c 69 73 | 74 20 6d 73 67 2d 73 69 |ues (lis|t msg-si|
|00001110| 7a 65 20 70 75 62 2d 6b | 65 79 29 20 28 6c 69 73 |ze pub-k|ey) (lis|
|00001120| 74 20 6d 73 67 2d 73 69 | 7a 65 20 70 72 69 2d 6b |t msg-si|ze pri-k|
|00001130| 65 79 29 29 29 29 0d 0d | 3b 3b 3b 43 68 6f 6f 73 |ey))))..|;;;Choos|
|00001140| 65 20 61 20 70 72 69 76 | 61 74 65 20 6b 65 79 20 |e a priv|ate key |
|00001150| 66 6f 72 20 70 2c 71 2c | 70 68 69 0d 28 64 65 66 |for p,q,|phi.(def|
|00001160| 75 6e 20 52 53 41 2d 63 | 68 6f 6f 73 65 2d 70 72 |un RSA-c|hoose-pr|
|00001170| 69 76 61 74 65 2d 6b 65 | 79 20 28 70 20 71 20 70 |ivate-ke|y (p q p|
|00001180| 68 69 29 0d 20 20 28 64 | 6f 20 28 28 64 20 28 2b |hi). (d|o ((d (+|
|00001190| 20 28 6d 61 78 20 70 20 | 71 29 20 32 29 20 28 2b | (max p |q) 2) (+|
|000011a0| 20 64 20 32 29 29 29 0d | 20 20 20 20 20 20 28 28 | d 2))).| ((|
|000011b0| 65 71 20 28 67 63 64 20 | 64 20 70 68 69 29 20 31 |eq (gcd |d phi) 1|
|000011c0| 29 20 64 29 29 29 0d 0d | 0d 3b 3b 3b 3b 3b 3b 3b |) d)))..|.;;;;;;;|
|000011d0| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;|
|000011e0| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;|
|000011f0| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 0d 3b 3b 3b 53 |;;;;;;;;|;;;.;;;S|
|00001200| 6f 6c 6f 76 61 79 20 26 | 20 53 74 72 61 73 73 65 |olovay &| Strasse|
|00001210| 6e 20 70 72 69 6d 65 20 | 74 65 73 74 2e 0d 0d 3b |n prime |test...;|
|00001220| 3b 67 65 6e 65 72 61 74 | 65 73 20 61 20 70 72 69 |;generat|es a pri|
|00001230| 6d 65 20 6f 66 20 74 68 | 65 20 73 70 65 63 69 66 |me of th|e specif|
|00001240| 69 65 64 20 6e 75 6d 62 | 65 72 20 6f 66 20 64 69 |ied numb|er of di|
|00001250| 67 69 74 73 0d 28 64 65 | 66 75 6e 20 67 65 6e 2d |gits.(de|fun gen-|
|00001260| 70 72 69 6d 65 20 28 64 | 69 67 69 74 73 20 26 6b |prime (d|igits &k|
|00001270| 65 79 20 28 63 65 72 74 | 61 69 6e 74 79 20 32 30 |ey (cert|ainty 20|
|00001280| 29 29 0d 20 20 28 6c 65 | 74 2a 20 28 28 74 65 6e |)). (le|t* ((ten|
|00001290| 2d 65 78 70 74 2d 64 69 | 67 69 74 73 2d 31 20 28 |-expt-di|gits-1 (|
|000012a0| 65 78 70 74 20 31 30 20 | 28 31 2d 20 64 69 67 69 |expt 10 |(1- digi|
|000012b0| 74 73 29 29 29 0d 20 20 | 20 20 20 20 20 20 20 28 |ts))). | (|
|000012c0| 74 65 6e 2d 65 78 70 74 | 2d 64 69 67 69 74 73 20 |ten-expt|-digits |
|000012d0| 20 20 28 2a 20 31 30 20 | 74 65 6e 2d 65 78 70 74 | (* 10 |ten-expt|
|000012e0| 2d 64 69 67 69 74 73 2d | 31 29 29 0d 20 20 20 20 |-digits-|1)). |
|000012f0| 20 20 20 20 20 28 6e 20 | 20 20 20 20 20 20 20 20 | (n | |
|00001300| 20 20 20 20 20 20 20 20 | 28 2b 20 74 65 6e 2d 65 | |(+ ten-e|
|00001310| 78 70 74 2d 64 69 67 69 | 74 73 2d 31 20 28 72 61 |xpt-digi|ts-1 (ra|
|00001320| 6e 64 6f 6d 20 28 2a 20 | 39 20 74 65 6e 2d 65 78 |ndom (* |9 ten-ex|
|00001330| 70 74 2d 64 69 67 69 74 | 73 2d 31 29 29 29 29 29 |pt-digit|s-1)))))|
|00001340| 0d 20 20 20 20 28 77 68 | 65 6e 20 28 65 76 65 6e |. (wh|en (even|
|00001350| 70 20 6e 29 20 28 69 6e | 63 66 20 6e 29 29 0d 20 |p n) (in|cf n)). |
|00001360| 20 20 20 28 64 6f 74 69 | 6d 65 73 20 28 69 20 28 | (doti|mes (i (|
|00001370| 63 65 69 6c 69 6e 67 20 | 28 2d 20 74 65 6e 2d 65 |ceiling |(- ten-e|
|00001380| 78 70 74 2d 64 69 67 69 | 74 73 20 6e 29 20 32 29 |xpt-digi|ts n) 2)|
|00001390| 20 28 65 72 72 6f 72 20 | 22 6e 6f 20 7e 61 20 64 | (error |"no ~a d|
|000013a0| 69 67 69 74 20 70 72 69 | 6d 65 73 20 66 6f 75 6e |igit pri|mes foun|
|000013b0| 64 2e 22 20 64 69 67 69 | 74 73 29 29 0d 20 20 20 |d." digi|ts)). |
|000013c0| 20 20 20 28 77 68 65 6e | 20 28 70 72 69 6d 65 2d | (when| (prime-|
|000013d0| 70 20 6e 20 63 65 72 74 | 61 69 6e 74 79 29 20 28 |p n cert|ainty) (|
|000013e0| 72 65 74 75 72 6e 2d 66 | 72 6f 6d 20 67 65 6e 2d |return-f|rom gen-|
|000013f0| 70 72 69 6d 65 20 6e 29 | 29 0d 20 20 20 20 20 20 |prime n)|). |
|00001400| 28 69 6e 63 66 20 6e 20 | 32 29 29 29 29 0d 0d 3b |(incf n |2))))..;|
|00001410| 3b 3b 41 20 6c 69 73 74 | 20 6f 66 20 74 68 65 20 |;;A list| of the |
|00001420| 66 69 72 73 74 20 31 30 | 30 20 70 72 69 6d 65 73 |first 10|0 primes|
|00001430| 0d 28 64 65 66 63 6f 6e | 73 74 61 6e 74 20 2a 66 |.(defcon|stant *f|
|00001440| 69 72 73 74 2d 70 72 69 | 6d 65 73 2a 0d 20 20 27 |irst-pri|mes*. '|
|00001450| 28 31 20 32 20 33 20 35 | 20 37 20 31 31 20 31 33 |(1 2 3 5| 7 11 13|
|00001460| 20 31 37 20 31 39 20 32 | 33 20 32 39 20 33 31 20 | 17 19 2|3 29 31 |
|00001470| 33 37 20 34 31 20 34 33 | 20 34 37 20 35 33 20 35 |37 41 43| 47 53 5|
|00001480| 39 20 36 31 20 36 37 20 | 37 31 20 37 33 20 37 39 |9 61 67 |71 73 79|
|00001490| 20 38 33 20 38 39 20 39 | 37 0d 20 20 20 20 31 30 | 83 89 9|7. 10|
|000014a0| 31 20 31 30 33 20 31 30 | 37 20 31 30 39 20 31 31 |1 103 10|7 109 11|
|000014b0| 33 20 31 32 37 20 31 33 | 31 20 31 33 37 20 31 33 |3 127 13|1 137 13|
|000014c0| 39 20 31 34 39 20 31 35 | 31 20 31 35 37 20 31 36 |9 149 15|1 157 16|
|000014d0| 33 20 31 36 37 20 31 37 | 33 20 31 37 39 20 31 38 |3 167 17|3 179 18|
|000014e0| 31 20 31 39 31 20 31 39 | 33 20 31 39 37 0d 20 20 |1 191 19|3 197. |
|000014f0| 20 20 31 39 39 20 32 31 | 31 20 32 32 33 20 32 32 | 199 21|1 223 22|
|00001500| 37 20 32 32 39 20 32 33 | 33 20 32 33 39 20 32 34 |7 229 23|3 239 24|
|00001510| 31 20 32 35 31 20 32 35 | 37 20 32 36 33 20 32 36 |1 251 25|7 263 26|
|00001520| 39 20 32 37 31 20 32 37 | 37 20 32 38 31 20 32 38 |9 271 27|7 281 28|
|00001530| 33 20 32 39 33 20 33 30 | 37 20 33 31 31 20 33 31 |3 293 30|7 311 31|
|00001540| 33 0d 20 20 20 20 33 31 | 37 20 33 33 31 20 33 33 |3. 31|7 331 33|
|00001550| 37 20 33 34 37 20 33 34 | 39 20 33 35 33 20 33 35 |7 347 34|9 353 35|
|00001560| 39 20 33 36 37 20 33 37 | 33 20 33 37 39 20 33 38 |9 367 37|3 379 38|
|00001570| 33 20 33 38 39 20 33 39 | 37 20 34 30 31 20 34 30 |3 389 39|7 401 40|
|00001580| 39 20 34 31 39 20 34 32 | 31 20 34 33 31 20 34 33 |9 419 42|1 431 43|
|00001590| 33 20 34 33 39 0d 20 20 | 20 20 34 34 33 20 34 34 |3 439. | 443 44|
|000015a0| 39 20 34 35 37 20 34 36 | 31 20 34 36 33 20 34 36 |9 457 46|1 463 46|
|000015b0| 37 20 34 37 39 20 34 38 | 37 20 34 39 31 20 34 39 |7 479 48|7 491 49|
|000015c0| 39 20 35 30 33 20 35 30 | 39 20 35 32 31 20 35 32 |9 503 50|9 521 52|
|000015d0| 33 29 29 0d 0d 3b 3b 3b | 52 65 74 75 72 6e 73 20 |3))..;;;|Returns |
|000015e0| 77 68 65 74 68 65 72 20 | 6e 20 69 73 20 70 72 69 |whether |n is pri|
|000015f0| 6d 65 20 77 69 74 68 20 | 61 20 63 65 72 74 61 69 |me with |a certai|
|00001600| 6e 74 79 20 6f 66 20 31 | 20 2d 20 31 2f 32 5e 74 |nty of 1| - 1/2^t|
|00001610| 65 73 74 2d 63 6f 75 6e | 74 2e 0d 3b 3b 3b 49 74 |est-coun|t..;;;It|
|00001620| 20 75 73 65 73 20 61 6e | 20 69 6d 70 72 6f 76 65 | uses an| improve|
|00001630| 64 20 76 65 72 73 69 6f | 6e 20 6f 66 20 74 68 65 |d versio|n of the|
|00001640| 20 6f 72 69 67 69 6e 61 | 6c 20 53 6f 6c 6f 76 61 | origina|l Solova|
|00001650| 79 20 26 20 53 74 72 61 | 73 73 65 6e 0d 3b 3b 3b |y & Stra|ssen.;;;|
|00001660| 70 72 69 6d 65 20 74 65 | 73 74 2e 20 42 61 73 65 |prime te|st. Base|
|00001670| 64 20 6f 6e 20 45 72 69 | 63 20 42 61 63 68 27 73 |d on Eri|c Bach's|
|00001680| 20 73 75 67 67 65 73 74 | 69 6f 6e 20 6f 66 20 75 | suggest|ion of u|
|00001690| 73 69 6e 67 20 61 20 73 | 65 71 75 65 6e 63 65 20 |sing a s|equence |
|000016a0| 0d 3b 3b 3b 6f 66 20 70 | 72 69 6d 65 73 20 72 61 |.;;;of p|rimes ra|
|000016b0| 74 68 65 72 20 74 68 61 | 6e 20 72 61 6e 64 6f 6d |ther tha|n random|
|000016c0| 20 6e 75 6d 62 65 72 73 | 2e 0d 3b 3b 3b 20 6d 61 | numbers|..;;; ma|
|000016d0| 6b 65 20 73 75 72 65 20 | 6e 75 6d 5f 74 65 73 74 |ke sure |num_test|
|000016e0| 73 20 3c 3d 20 74 68 65 | 20 6e 75 6d 62 65 72 20 |s <= the| number |
|000016f0| 6f 66 20 70 72 69 6d 65 | 73 20 69 6e 20 2a 66 69 |of prime|s in *fi|
|00001700| 72 73 74 5f 70 72 69 6d | 65 73 2a 0d 28 64 65 66 |rst_prim|es*.(def|
|00001710| 75 6e 20 70 72 69 6d 65 | 2d 70 20 28 6e 20 74 65 |un prime|-p (n te|
|00001720| 73 74 2d 63 6f 75 6e 74 | 29 0d 20 20 28 75 6e 6c |st-count|). (unl|
|00001730| 65 73 73 20 28 3c 3d 20 | 74 65 73 74 2d 63 6f 75 |ess (<= |test-cou|
|00001740| 6e 74 20 28 6c 65 6e 67 | 74 68 20 2a 66 69 72 73 |nt (leng|th *firs|
|00001750| 74 2d 70 72 69 6d 65 73 | 2a 29 29 0d 20 20 20 20 |t-primes|*)). |
|00001760| 28 65 72 72 6f 72 20 22 | 74 65 73 74 2d 63 6f 75 |(error "|test-cou|
|00001770| 6e 74 20 6d 75 73 74 20 | 62 65 20 6c 65 73 73 20 |nt must |be less |
|00001780| 74 68 61 6e 20 7e 61 2e | 22 20 28 6c 65 6e 67 74 |than ~a.|" (lengt|
|00001790| 68 20 2a 66 69 72 73 74 | 2d 70 72 69 6d 65 73 2a |h *first|-primes*|
|000017a0| 29 29 29 0d 20 20 28 77 | 68 65 6e 20 28 6f 64 64 |))). (w|hen (odd|
|000017b0| 70 20 6e 29 0d 20 20 20 | 20 28 6c 65 74 20 28 28 |p n). | (let ((|
|000017c0| 70 72 69 6d 65 2d 6c 69 | 73 74 20 2a 66 69 72 73 |prime-li|st *firs|
|000017d0| 74 2d 70 72 69 6d 65 73 | 2a 29 0d 20 20 20 20 20 |t-primes|*). |
|000017e0| 20 20 20 20 20 28 61 20 | 6e 69 6c 29 29 0d 20 20 | (a |nil)). |
|000017f0| 20 20 20 20 28 64 6f 74 | 69 6d 65 73 20 28 69 20 | (dot|imes (i |
|00001800| 74 65 73 74 2d 63 6f 75 | 6e 74 20 6e 29 0d 20 20 |test-cou|nt n). |
|00001810| 20 20 20 20 20 20 28 73 | 65 74 66 20 61 20 28 70 | (s|etf a (p|
|00001820| 6f 70 20 70 72 69 6d 65 | 2d 6c 69 73 74 29 29 0d |op prime|-list)).|
|00001830| 20 20 20 20 20 20 20 20 | 28 63 6f 6e 64 0d 20 20 | |(cond. |
|00001840| 20 20 20 20 20 20 20 28 | 28 3e 3d 20 61 20 6e 29 | (|(>= a n)|
|00001850| 20 20 20 20 20 20 20 20 | 28 72 65 74 75 72 6e 20 | |(return |
|00001860| 6e 29 29 0d 20 20 20 20 | 20 20 20 20 20 28 28 3e |n)). | ((>|
|00001870| 20 28 67 63 64 20 61 20 | 6e 29 20 31 29 20 28 72 | (gcd a |n) 1) (r|
|00001880| 65 74 75 72 6e 20 6e 69 | 6c 29 29 0d 20 20 20 20 |eturn ni|l)). |
|00001890| 20 20 20 20 20 28 28 2f | 3d 20 28 6d 6f 64 20 28 | ((/|= (mod (|
|000018a0| 6a 61 63 6f 62 69 20 61 | 20 6e 29 20 6e 29 20 28 |jacobi a| n) n) (|
|000018b0| 65 78 70 74 2d 6d 6f 64 | 20 61 20 28 2f 20 28 31 |expt-mod| a (/ (1|
|000018c0| 2d 20 6e 29 20 32 29 20 | 6e 29 29 20 28 72 65 74 |- n) 2) |n)) (ret|
|000018d0| 75 72 6e 20 6e 69 6c 29 | 29 29 29 29 29 29 0d 0d |urn nil)|))))))..|
|000018e0| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;|
|000018f0| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;|
|00001900| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;|
|00001910| 3b 3b 0d 3b 3b 3b 20 6d | 69 73 63 20 75 74 69 6c |;;.;;; m|isc util|
|00001920| 73 0d 0d 3b 3b 52 65 74 | 75 72 6e 73 20 62 61 73 |s..;;Ret|urns bas|
|00001930| 65 5e 70 6f 77 65 72 20 | 6d 6f 64 20 6d 6f 64 75 |e^power |mod modu|
|00001940| 6c 75 73 0d 3b 3b 73 69 | 67 6e 69 66 69 63 61 6e |lus.;;si|gnifican|
|00001950| 74 6c 79 20 6d 6f 72 65 | 20 65 66 66 69 63 69 65 |tly more| efficie|
|00001960| 6e 74 20 74 68 61 6e 20 | 28 6d 6f 64 20 28 65 78 |nt than |(mod (ex|
|00001970| 70 74 20 62 61 73 65 20 | 70 6f 77 65 72 29 20 6d |pt base |power) m|
|00001980| 6f 64 75 6c 75 73 29 0d | 28 64 65 66 75 6e 20 65 |odulus).|(defun e|
|00001990| 78 70 74 2d 6d 6f 64 20 | 28 62 61 73 65 20 70 6f |xpt-mod |(base po|
|000019a0| 77 65 72 20 6d 6f 64 75 | 6c 75 73 29 0d 20 20 28 |wer modu|lus). (|
|000019b0| 69 66 20 28 7a 65 72 6f | 70 20 70 6f 77 65 72 29 |if (zero|p power)|
|000019c0| 0d 20 20 20 20 31 0d 20 | 20 20 20 28 6c 65 74 20 |. 1. | (let |
|000019d0| 28 28 69 20 28 31 2d 20 | 28 69 6e 74 65 67 65 72 |((i (1- |(integer|
|000019e0| 2d 6c 65 6e 67 74 68 20 | 70 6f 77 65 72 29 29 29 |-length |power)))|
|000019f0| 0d 20 20 20 20 20 20 20 | 20 20 20 28 72 65 73 75 |. | (resu|
|00001a00| 6c 74 20 31 29 29 0d 20 | 20 20 20 20 20 28 6c 6f |lt 1)). | (lo|
|00001a10| 6f 70 0d 20 20 20 20 20 | 20 20 20 28 77 68 65 6e |op. | (when|
|00001a20| 20 28 6c 6f 67 62 69 74 | 70 20 69 20 70 6f 77 65 | (logbit|p i powe|
|00001a30| 72 29 0d 20 20 20 20 20 | 20 20 20 20 20 28 73 65 |r). | (se|
|00001a40| 74 66 20 72 65 73 75 6c | 74 20 28 6d 6f 64 20 28 |tf resul|t (mod (|
|00001a50| 2a 20 72 65 73 75 6c 74 | 20 62 61 73 65 29 20 6d |* result| base) m|
|00001a60| 6f 64 75 6c 75 73 29 29 | 29 0d 20 20 20 20 20 20 |odulus))|). |
|00001a70| 20 20 28 77 68 65 6e 20 | 28 7a 65 72 6f 70 20 69 | (when |(zerop i|
|00001a80| 29 20 28 72 65 74 75 72 | 6e 20 72 65 73 75 6c 74 |) (retur|n result|
|00001a90| 29 29 0d 20 20 20 20 20 | 20 20 20 28 73 65 74 66 |)). | (setf|
|00001aa0| 20 72 65 73 75 6c 74 20 | 28 6d 6f 64 20 28 2a 20 | result |(mod (* |
|00001ab0| 72 65 73 75 6c 74 20 72 | 65 73 75 6c 74 29 20 6d |result r|esult) m|
|00001ac0| 6f 64 75 6c 75 73 29 29 | 0d 20 20 20 20 20 20 20 |odulus))|. |
|00001ad0| 20 28 64 65 63 66 20 69 | 29 29 29 29 29 0d 0d 0d | (decf i|)))))...|
|00001ae0| 3b 3b 3b 52 65 74 75 72 | 6e 73 20 74 68 65 20 76 |;;;Retur|ns the v|
|00001af0| 61 6c 75 65 20 6f 66 20 | 74 68 65 20 6a 61 63 6f |alue of |the jaco|
|00001b00| 62 69 20 73 79 6d 62 6f | 6c 20 28 6d 2f 6e 29 0d |bi symbo|l (m/n).|
|00001b10| 28 64 65 66 75 6e 20 6a | 61 63 6f 62 69 20 28 6d |(defun j|acobi (m|
|00001b20| 20 6e 29 0d 20 28 63 6f | 6e 64 0d 20 20 28 28 3d | n). (co|nd. ((=|
|00001b30| 20 6d 20 31 29 20 31 29 | 0d 20 20 28 28 6f 72 20 | m 1) 1)|. ((or |
|00001b40| 28 7a 65 72 6f 70 20 6d | 29 20 28 65 76 65 6e 70 |(zerop m|) (evenp|
|00001b50| 20 6e 29 29 20 30 29 0d | 20 20 28 28 65 76 65 6e | n)) 0).| ((even|
|00001b60| 70 20 6d 29 20 28 2a 20 | 28 69 66 20 28 2f 3d 20 |p m) (* |(if (/= |
|00001b70| 28 6d 6f 64 20 6e 20 38 | 29 20 33 20 35 29 20 31 |(mod n 8|) 3 5) 1|
|00001b80| 20 2d 31 29 20 28 6a 61 | 63 6f 62 69 20 28 2f 20 | -1) (ja|cobi (/ |
|00001b90| 6d 20 32 29 20 6e 29 29 | 29 0d 20 20 28 74 20 28 |m 2) n))|). (t (|
|00001ba0| 2a 20 28 69 66 20 28 3d | 20 28 6d 6f 64 20 6d 20 |* (if (=| (mod m |
|00001bb0| 34 29 20 28 6d 6f 64 20 | 6e 20 34 29 20 33 29 20 |4) (mod |n 4) 3) |
|00001bc0| 2d 31 20 31 29 20 28 6a | 61 63 6f 62 69 20 28 6d |-1 1) (j|acobi (m|
|00001bd0| 6f 64 20 6e 20 6d 29 20 | 6d 29 29 29 29 29 0d 0d |od n m) |m)))))..|
|00001be0| 0d 3b 3b 3b 52 65 74 75 | 72 6e 73 20 6d 75 6c 74 |.;;;Retu|rns mult|
|00001bf0| 69 70 6c 69 63 61 74 69 | 76 65 20 69 6e 76 65 72 |iplicati|ve inver|
|00001c00| 73 65 20 6f 66 20 78 31 | 20 6d 6f 64 20 78 30 20 |se of x1| mod x0 |
|00001c10| 75 73 69 6e 67 20 74 68 | 65 20 65 78 74 65 6e 64 |using th|e extend|
|00001c20| 65 64 0d 3b 3b 3b 76 65 | 72 73 69 6f 6e 20 6f 66 |ed.;;;ve|rsion of|
|00001c30| 20 45 75 63 6c 69 64 27 | 73 20 61 6c 67 6f 72 69 | Euclid'|s algori|
|00001c40| 74 68 6d 2e 20 49 66 20 | 74 68 65 20 6e 75 6d 62 |thm. If |the numb|
|00001c50| 65 72 73 20 61 72 65 20 | 6e 6f 74 20 72 65 6c 61 |ers are |not rela|
|00001c60| 74 69 76 65 6c 79 0d 3b | 3b 3b 70 72 69 6d 65 20 |tively.;|;;prime |
|00001c70| 6e 69 6c 20 77 69 6c 6c | 20 62 65 20 72 65 74 75 |nil will| be retu|
|00001c80| 72 6e 65 64 2e 20 28 61 | 6c 67 6f 72 69 74 68 6d |rned. (a|lgorithm|
|00001c90| 20 64 65 64 75 63 65 64 | 20 66 72 6f 6d 20 52 53 | deduced| from RS|
|00001ca0| 41 20 70 61 70 65 72 29 | 0d 28 64 65 66 75 6e 20 |A paper)|.(defun |
|00001cb0| 6d 75 6c 74 69 70 6c 69 | 63 61 74 69 76 65 2d 69 |multipli|cative-i|
|00001cc0| 6e 76 65 72 73 65 20 28 | 6e 20 6d 6f 64 75 6c 75 |nverse (|n modulu|
|00001cd0| 73 29 0d 20 20 28 6c 61 | 62 65 6c 73 20 28 28 6d |s). (la|bels ((m|
|00001ce0| 75 6c 74 69 6e 76 20 28 | 78 31 20 78 30 20 61 31 |ultinv (|x1 x0 a1|
|00001cf0| 20 61 30 20 62 31 20 62 | 30 20 6d 29 0d 20 20 20 | a0 b1 b|0 m). |
|00001d00| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001d10| 20 28 69 66 20 28 3d 20 | 78 31 20 30 29 0d 20 20 | (if (= |x1 0). |
|00001d20| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001d30| 20 20 20 20 28 69 66 20 | 28 3d 20 78 30 20 31 29 | (if |(= x0 1)|
|00001d40| 20 28 6d 6f 64 20 62 30 | 20 6d 29 29 0d 20 20 20 | (mod b0| m)). |
|00001d50| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001d60| 20 20 20 28 6d 75 6c 74 | 69 6e 76 20 28 6d 6f 64 | (mult|inv (mod|
|00001d70| 20 78 30 20 78 31 29 20 | 78 31 0d 20 20 20 20 20 | x0 x1) |x1. |
|00001d80| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001d90| 20 20 20 20 20 20 20 20 | 20 20 28 2d 20 61 30 20 | | (- a0 |
|00001da0| 28 2a 20 28 74 72 75 6e | 63 61 74 65 20 78 30 20 |(* (trun|cate x0 |
|00001db0| 78 31 29 20 61 31 29 29 | 20 61 31 0d 20 20 20 20 |x1) a1))| a1. |
|00001dc0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001dd0| 20 20 20 20 20 20 20 20 | 20 20 20 28 2d 20 62 30 | | (- b0|
|00001de0| 20 28 2a 20 28 74 72 75 | 6e 63 61 74 65 20 78 30 | (* (tru|ncate x0|
|00001df0| 20 78 31 29 20 62 31 29 | 29 20 62 31 0d 20 20 20 | x1) b1)|) b1. |
|00001e00| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001e10| 20 20 20 20 20 20 20 20 | 20 20 20 20 28 69 66 20 | | (if |
|00001e20| 6d 20 6d 20 78 30 29 29 | 29 29 29 0d 20 20 20 20 |m m x0))|))). |
|00001e30| 20 20 20 20 20 20 28 6d | 75 6c 74 69 6e 76 20 6e | (m|ultinv n|
|00001e40| 20 6d 6f 64 75 6c 75 73 | 20 30 20 31 20 31 20 30 | modulus| 0 1 1 0|
|00001e50| 20 6e 69 6c 29 29 29 0d | 0d 0d 3b 3b 3b 54 68 69 | nil))).|..;;;Thi|
|00001e60| 73 20 66 75 6e 63 74 69 | 6f 6e 20 72 65 74 75 72 |s functi|on retur|
|00001e70| 6e 73 20 74 68 65 20 69 | 6e 74 65 67 65 72 20 65 |ns the i|nteger e|
|00001e80| 71 75 69 76 61 6c 65 6e | 74 20 74 6f 20 74 68 65 |quivalen|t to the|
|00001e90| 20 73 74 72 69 6e 67 0d | 28 64 65 66 75 6e 20 73 | string.|(defun s|
|00001ea0| 74 72 69 6e 67 2d 74 6f | 2d 69 6e 74 20 28 73 29 |tring-to|-int (s)|
|00001eb0| 0d 20 28 6c 65 74 20 28 | 28 72 65 73 75 6c 74 20 |. (let (|(result |
|00001ec0| 30 29 29 0d 20 20 28 64 | 6f 74 69 6d 65 73 20 28 |0)). (d|otimes (|
|00001ed0| 69 20 28 6c 65 6e 67 74 | 68 20 73 29 20 72 65 73 |i (lengt|h s) res|
|00001ee0| 75 6c 74 29 0d 20 20 20 | 28 73 65 74 66 20 72 65 |ult). |(setf re|
|00001ef0| 73 75 6c 74 20 28 64 70 | 62 20 28 63 68 61 72 2d |sult (dp|b (char-|
|00001f00| 69 6e 74 20 28 63 68 61 | 72 20 73 20 69 29 29 20 |int (cha|r s i)) |
|00001f10| 28 62 79 74 65 20 38 20 | 28 2a 20 28 2d 20 28 6c |(byte 8 |(* (- (l|
|00001f20| 65 6e 67 74 68 20 73 29 | 20 69 20 31 29 20 38 29 |ength s)| i 1) 8)|
|00001f30| 29 20 72 65 73 75 6c 74 | 29 29 29 29 29 0d 0d 0d |) result|)))))...|
|00001f40| 3b 3b 3b 54 68 69 73 20 | 66 75 6e 63 74 69 6f 6e |;;;This |function|
|00001f50| 20 72 65 74 75 72 6e 73 | 20 74 68 65 20 73 74 72 | returns| the str|
|00001f60| 69 6e 67 20 65 71 75 69 | 76 61 6c 65 6e 74 20 6f |ing equi|valent o|
|00001f70| 66 20 61 6e 20 69 6e 74 | 65 67 65 72 0d 28 64 65 |f an int|eger.(de|
|00001f80| 66 75 6e 20 69 6e 74 2d | 74 6f 2d 73 74 72 69 6e |fun int-|to-strin|
|00001f90| 67 20 28 6e 20 26 6f 70 | 74 69 6f 6e 61 6c 20 28 |g (n &op|tional (|
|00001fa0| 73 74 72 2d 6c 65 6e 20 | 28 63 65 69 6c 69 6e 67 |str-len |(ceiling|
|00001fb0| 20 28 69 6e 74 65 67 65 | 72 2d 6c 65 6e 67 74 68 | (intege|r-length|
|00001fc0| 20 6e 29 20 38 29 29 29 | 0d 20 20 28 6c 65 74 20 | n) 8)))|. (let |
|00001fd0| 28 28 72 65 73 75 6c 74 | 20 28 6d 61 6b 65 2d 73 |((result| (make-s|
|00001fe0| 74 72 69 6e 67 20 73 74 | 72 2d 6c 65 6e 29 29 29 |tring st|r-len)))|
|00001ff0| 0d 20 20 20 20 28 64 6f | 74 69 6d 65 73 20 28 69 |. (do|times (i|
|00002000| 20 73 74 72 2d 6c 65 6e | 20 72 65 73 75 6c 74 29 | str-len| result)|
|00002010| 0d 20 20 20 20 20 20 28 | 73 65 74 66 20 28 63 68 |. (|setf (ch|
|00002020| 61 72 20 72 65 73 75 6c | 74 20 69 29 20 28 63 6f |ar resul|t i) (co|
|00002030| 64 65 2d 63 68 61 72 20 | 28 6c 64 62 20 28 62 79 |de-char |(ldb (by|
|00002040| 74 65 20 38 20 28 2a 20 | 28 2d 20 73 74 72 2d 6c |te 8 (* |(- str-l|
|00002050| 65 6e 20 69 20 31 29 20 | 38 29 29 20 6e 29 29 29 |en i 1) |8)) n)))|
|00002060| 29 29 29 0d 0d 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |)))..;;;|;;;;;;;;|
|00002070| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;|
|00002080| 3b 3b 3b 3b 3b 3b 3b 3b | 3b 3b 3b 3b 3b 3b 3b 3b |;;;;;;;;|;;;;;;;;|
|00002090| 3b 3b 3b 3b 3b 3b 3b 0d | 0d 23 7c 0d 0d 28 64 65 |;;;;;;;.|.#|..(de|
|000020a0| 66 76 61 72 20 70 75 62 | 29 0d 28 64 65 66 76 61 |fvar pub|).(defva|
|000020b0| 72 20 70 72 69 29 0d 0d | 3b 3b 35 30 20 64 69 67 |r pri)..|;;50 dig|
|000020c0| 69 74 20 70 72 69 6d 65 | 73 20 2d 3e 20 7e 31 30 |it prime|s -> ~10|
|000020d0| 30 20 64 69 67 69 74 20 | 6b 65 79 73 0d 28 6d 75 |0 digit |keys.(mu|
|000020e0| 6c 74 69 70 6c 65 2d 76 | 61 6c 75 65 2d 73 65 74 |ltiple-v|alue-set|
|000020f0| 71 0d 20 20 28 70 75 62 | 20 70 72 69 29 0d 20 20 |q. (pub| pri). |
|00002100| 28 52 53 41 2d 67 65 6e | 2d 6b 65 79 73 20 37 37 |(RSA-gen|-keys 77|
|00002110| 30 30 33 33 37 33 39 34 | 36 34 38 34 36 31 35 35 |00337394|64846155|
|00002120| 36 35 30 37 37 38 35 35 | 38 37 34 39 33 35 36 38 |65077855|87493568|
|00002130| 39 37 38 39 35 38 35 37 | 31 34 38 38 31 39 35 33 |97895857|14881953|
|00002140| 0d 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | |
|00002150| 20 38 32 37 36 33 31 34 | 32 32 37 38 35 35 38 34 | 8276314|22785584|
|00002160| 33 37 36 30 38 36 30 39 | 30 36 30 33 38 31 33 37 |37608609|06038137|
|00002170| 32 33 36 37 39 31 32 33 | 32 37 39 35 35 31 35 33 |23679123|27955153|
|00002180| 36 38 39 29 29 0d 0d 3b | 3b 35 20 64 69 67 69 74 |689))..;|;5 digit|
|00002190| 20 70 72 69 6d 65 73 20 | 2d 3e 20 7e 31 30 20 64 | primes |-> ~10 d|
|000021a0| 69 67 69 74 20 6b 65 79 | 73 20 2d 20 66 61 73 74 |igit key|s - fast|
|000021b0| 65 72 20 70 65 72 66 6f | 72 6d 61 6e 63 65 0d 28 |er perfo|rmance.(|
|000021c0| 6d 75 6c 74 69 70 6c 65 | 2d 76 61 6c 75 65 2d 73 |multiple|-value-s|
|000021d0| 65 74 71 20 28 70 75 62 | 20 70 72 69 29 20 28 52 |etq (pub| pri) (R|
|000021e0| 53 41 2d 67 65 6e 2d 6b | 65 79 73 20 34 37 32 35 |SA-gen-k|eys 4725|
|000021f0| 31 20 33 35 37 34 37 29 | 29 0d 0d 28 52 53 41 2d |1 35747)|)..(RSA-|
|00002200| 64 65 63 6f 64 65 2d 73 | 74 72 69 6e 67 20 28 52 |decode-s|tring (R|
|00002210| 53 41 2d 65 6e 63 6f 64 | 65 2d 73 74 72 69 6e 67 |SA-encod|e-string|
|00002220| 20 22 74 68 65 20 72 61 | 69 6e 20 69 6e 20 73 70 | "the ra|in in sp|
|00002230| 61 69 6e 22 20 70 75 62 | 29 20 70 72 69 29 0d 0d |ain" pub|) pri)..|
|00002240| 28 52 53 41 2d 64 65 63 | 6f 64 65 2d 73 74 72 69 |(RSA-dec|ode-stri|
|00002250| 6e 67 20 28 52 53 41 2d | 65 6e 63 6f 64 65 2d 73 |ng (RSA-|encode-s|
|00002260| 74 72 69 6e 67 20 22 74 | 68 65 20 72 61 69 6e 20 |tring "t|he rain |
|00002270| 69 6e 20 73 70 61 69 6e | 22 20 70 72 69 29 20 70 |in spain|" pri) p|
|00002280| 75 62 29 0d 0d 28 52 53 | 41 2d 65 6e 63 6f 64 65 |ub)..(RS|A-encode|
|00002290| 2d 66 69 6c 65 20 28 63 | 68 6f 6f 73 65 2d 66 69 |-file (c|hoose-fi|
|000022a0| 6c 65 2d 64 69 61 6c 6f | 67 29 20 28 63 68 6f 6f |le-dialo|g) (choo|
|000022b0| 73 65 2d 6e 65 77 2d 66 | 69 6c 65 2d 64 69 61 6c |se-new-f|ile-dial|
|000022c0| 6f 67 29 20 70 75 62 29 | 0d 28 52 53 41 2d 64 65 |og) pub)|.(RSA-de|
|000022d0| 63 6f 64 65 2d 66 69 6c | 65 20 28 63 68 6f 6f 73 |code-fil|e (choos|
|000022e0| 65 2d 66 69 6c 65 2d 64 | 69 61 6c 6f 67 29 20 28 |e-file-d|ialog) (|
|000022f0| 63 68 6f 6f 73 65 2d 6e | 65 77 2d 66 69 6c 65 2d |choose-n|ew-file-|
|00002300| 64 69 61 6c 6f 67 29 20 | 70 72 69 29 0d 0d 0d 3b |dialog) |pri)...;|
|00002310| 3b 73 63 68 6e 69 74 7a | 79 20 64 65 6d 6f 20 2d |;schnitz|y demo -|
|00002320| 20 64 72 61 67 20 26 20 | 64 72 6f 70 20 65 6e 63 | drag & |drop enc|
|00002330| 6f 64 69 6e 67 2f 64 65 | 63 6f 64 69 6e 67 20 64 |oding/de|coding d|
|00002340| 69 61 6c 6f 67 20 69 74 | 65 6d 73 0d 0d 28 6f 6f |ialog it|ems..(oo|
|00002350| 75 2d 64 65 70 65 6e 64 | 65 6e 63 69 65 73 20 3a |u-depend|encies :|
|00002360| 64 72 61 67 67 61 62 6c | 65 2d 73 76 6d 0d 20 20 |draggabl|e-svm. |
|00002370| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002380| 3a 64 72 6f 70 70 61 62 | 6c 65 2d 73 76 6d 29 0d |:droppab|le-svm).|
|00002390| 0d 28 64 65 66 76 61 72 | 20 70 75 62 29 0d 28 64 |.(defvar| pub).(d|
|000023a0| 65 66 76 61 72 20 70 72 | 69 29 0d 0d 28 6d 75 6c |efvar pr|i)..(mul|
|000023b0| 74 69 70 6c 65 2d 76 61 | 6c 75 65 2d 73 65 74 71 |tiple-va|lue-setq|
|000023c0| 20 28 70 75 62 20 70 72 | 69 29 20 28 52 53 41 2d | (pub pr|i) (RSA-|
|000023d0| 67 65 6e 2d 6b 65 79 73 | 20 34 37 32 35 31 20 33 |gen-keys| 47251 3|
|000023e0| 35 37 34 37 29 29 0d 0d | 3b 3b 65 6e 63 6f 64 65 |5747))..|;;encode|
|000023f0| 20 26 20 64 65 63 6f 64 | 65 0d 28 52 53 41 2d 64 | & decod|e.(RSA-d|
|00002400| 65 63 6f 64 65 2d 73 74 | 72 69 6e 67 20 28 52 53 |ecode-st|ring (RS|
|00002410| 41 2d 65 6e 63 6f 64 65 | 2d 73 74 72 69 6e 67 20 |A-encode|-string |
|00002420| 22 74 68 65 20 72 61 69 | 6e 20 69 6e 20 73 70 61 |"the rai|n in spa|
|00002430| 69 6e 22 20 70 75 62 29 | 20 70 72 69 29 0d 0d 3b |in" pub)| pri)..;|
|00002440| 3b 64 69 67 69 74 61 6c | 20 73 69 67 6e 61 74 75 |;digital| signatu|
|00002450| 72 65 0d 28 52 53 41 2d | 64 65 63 6f 64 65 2d 73 |re.(RSA-|decode-s|
|00002460| 74 72 69 6e 67 20 28 52 | 53 41 2d 65 6e 63 6f 64 |tring (R|SA-encod|
|00002470| 65 2d 73 74 72 69 6e 67 | 20 22 69 74 27 73 20 6d |e-string| "it's m|
|00002480| 65 20 36 2f 32 30 2f 39 | 32 22 20 70 72 69 29 20 |e 6/20/9|2" pri) |
|00002490| 70 75 62 29 0d 0d 0d 3b | 3b 75 73 65 20 64 72 6f |pub)...;|;use dro|
|000024a0| 70 70 61 62 6c 65 20 6d | 69 78 69 6e 20 74 6f 20 |ppable m|ixin to |
|000024b0| 63 72 65 61 74 65 20 61 | 6e 20 72 73 61 20 64 69 |create a|n rsa di|
|000024c0| 61 6c 6f 67 20 69 74 65 | 6d 0d 28 64 65 66 63 6c |alog ite|m.(defcl|
|000024d0| 61 73 73 20 72 73 61 2d | 77 69 64 67 65 74 20 28 |ass rsa-|widget (|
|000024e0| 64 72 6f 70 70 61 62 6c | 65 2d 73 76 6d 20 73 74 |droppabl|e-svm st|
|000024f0| 61 74 69 63 2d 74 65 78 | 74 2d 64 69 61 6c 6f 67 |atic-tex|t-dialog|
|00002500| 2d 69 74 65 6d 29 0d 20 | 20 28 28 70 75 62 6c 69 |-item). | ((publi|
|00002510| 63 2d 6b 65 79 20 20 20 | 3a 61 63 63 65 73 73 6f |c-key |:accesso|
|00002520| 72 20 70 75 62 6c 69 63 | 2d 6b 65 79 0d 20 20 20 |r public|-key. |
|00002530| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 3a 69 | | :i|
|00002540| 6e 69 74 61 72 67 20 20 | 3a 70 75 62 6c 69 63 2d |nitarg |:public-|
|00002550| 6b 65 79 29 0d 20 20 20 | 28 70 72 69 76 61 74 65 |key). |(private|
|00002560| 2d 6b 65 79 20 20 3a 61 | 63 63 65 73 73 6f 72 20 |-key :a|ccessor |
|00002570| 70 72 69 76 61 74 65 2d | 6b 65 79 0d 20 20 20 20 |private-|key. |
|00002580| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 3a 69 6e | | :in|
|00002590| 69 74 61 72 67 20 20 3a | 70 72 69 76 61 74 65 2d |itarg :|private-|
|000025a0| 6b 65 79 29 29 29 0d 0d | 28 64 65 66 75 6e 20 65 |key)))..|(defun e|
|000025b0| 6e 63 6f 64 65 72 2d 66 | 6e 20 28 64 69 20 74 61 |ncoder-f|n (di ta|
|000025c0| 72 67 65 74 2d 64 69 20 | 6f 66 66 73 65 74 20 77 |rget-di |offset w|
|000025d0| 68 65 72 65 29 0d 20 20 | 28 64 65 63 6c 61 72 65 |here). |(declare|
|000025e0| 20 28 69 67 6e 6f 72 65 | 20 6f 66 66 73 65 74 20 | (ignore| offset |
|000025f0| 77 68 65 72 65 29 29 0d | 20 20 28 73 65 74 2d 64 |where)).| (set-d|
|00002600| 69 61 6c 6f 67 2d 69 74 | 65 6d 2d 74 65 78 74 20 |ialog-it|em-text |
|00002610| 74 61 72 67 65 74 2d 64 | 69 20 28 52 53 41 2d 65 |target-d|i (RSA-e|
|00002620| 6e 63 6f 64 65 2d 73 74 | 72 69 6e 67 0d 20 20 20 |ncode-st|ring. |
|00002630| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002640| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002650| 28 64 69 61 6c 6f 67 2d | 69 74 65 6d 2d 74 65 78 |(dialog-|item-tex|
|00002660| 74 20 74 61 72 67 65 74 | 2d 64 69 29 0d 20 20 20 |t target|-di). |
|00002670| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002680| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002690| 28 70 72 69 76 61 74 65 | 2d 6b 65 79 20 64 69 29 |(private|-key di)|
|000026a0| 29 29 29 0d 0d 28 64 65 | 66 75 6e 20 64 65 63 6f |)))..(de|fun deco|
|000026b0| 64 65 72 2d 66 6e 20 28 | 64 69 20 74 61 72 67 65 |der-fn (|di targe|
|000026c0| 74 2d 64 69 20 6f 66 66 | 73 65 74 20 77 68 65 72 |t-di off|set wher|
|000026d0| 65 29 0d 20 20 28 64 65 | 63 6c 61 72 65 20 28 69 |e). (de|clare (i|
|000026e0| 67 6e 6f 72 65 20 6f 66 | 66 73 65 74 20 77 68 65 |gnore of|fset whe|
|000026f0| 72 65 29 29 0d 20 20 28 | 73 65 74 2d 64 69 61 6c |re)). (|set-dial|
|00002700| 6f 67 2d 69 74 65 6d 2d | 74 65 78 74 20 74 61 72 |og-item-|text tar|
|00002710| 67 65 74 2d 64 69 20 28 | 52 53 41 2d 64 65 63 6f |get-di (|RSA-deco|
|00002720| 64 65 2d 73 74 72 69 6e | 67 0d 20 20 20 20 20 20 |de-strin|g. |
|00002730| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002740| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 28 64 69 | | (di|
|00002750| 61 6c 6f 67 2d 69 74 65 | 6d 2d 74 65 78 74 20 74 |alog-ite|m-text t|
|00002760| 61 72 67 65 74 2d 64 69 | 29 0d 20 20 20 20 20 20 |arget-di|). |
|00002770| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002780| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 28 70 75 | | (pu|
|00002790| 62 6c 69 63 2d 6b 65 79 | 20 64 69 29 29 29 29 0d |blic-key| di)))).|
|000027a0| 0d 28 73 65 74 66 20 2a | 74 65 73 74 2d 77 2a 0d |.(setf *|test-w*.|
|000027b0| 20 20 20 20 20 20 28 6d | 61 6b 65 2d 69 6e 73 74 | (m|ake-inst|
|000027c0| 61 6e 63 65 0d 20 20 20 | 20 20 20 20 20 27 64 69 |ance. | 'di|
|000027d0| 61 6c 6f 67 0d 20 20 20 | 20 20 20 20 20 3a 77 69 |alog. | :wi|
|000027e0| 6e 64 6f 77 2d 74 79 70 | 65 20 20 20 3a 64 6f 63 |ndow-typ|e :doc|
|000027f0| 75 6d 65 6e 74 0d 20 20 | 20 20 20 20 20 20 3a 76 |ument. | :v|
|00002800| 69 65 77 2d 70 6f 73 69 | 74 69 6f 6e 20 3a 63 65 |iew-posi|tion :ce|
|00002810| 6e 74 65 72 65 64 0d 20 | 20 20 20 20 20 20 20 3a |ntered. | :|
|00002820| 76 69 65 77 2d 73 69 7a | 65 20 20 20 20 20 23 40 |view-siz|e #@|
|00002830| 28 32 32 30 20 32 30 30 | 29 0d 20 20 20 20 20 20 |(220 200|). |
|00002840| 20 20 3a 77 69 6e 64 6f | 77 2d 74 69 74 6c 65 20 | :windo|w-title |
|00002850| 20 22 72 73 61 20 64 65 | 6d 6f 22 0d 20 20 20 20 | "rsa de|mo". |
|00002860| 20 20 20 20 3a 63 6c 6f | 73 65 2d 62 6f 78 2d 70 | :clo|se-box-p|
|00002870| 20 20 20 74 0d 20 20 20 | 20 20 20 20 3a 76 69 65 | t. | :vie|
|00002880| 77 2d 73 75 62 76 69 65 | 77 73 0d 20 20 20 20 20 |w-subvie|ws. |
|00002890| 20 20 20 28 6c 69 73 74 | 20 28 6d 61 6b 65 2d 69 | (list| (make-i|
|000028a0| 6e 73 74 61 6e 63 65 0d | 20 20 20 20 20 20 20 20 |nstance.| |
|000028b0| 20 20 20 20 20 20 20 20 | 27 72 73 61 2d 77 69 64 | |'rsa-wid|
|000028c0| 67 65 74 0d 20 20 20 20 | 20 20 20 20 20 20 20 20 |get. | |
|000028d0| 20 20 20 20 3a 70 72 69 | 76 61 74 65 2d 6b 65 79 | :pri|vate-key|
|000028e0| 20 70 72 69 0d 20 20 20 | 20 20 20 20 20 20 20 20 | pri. | |
|000028f0| 20 20 20 20 20 3a 76 69 | 65 77 2d 70 6f 73 69 74 | :vi|ew-posit|
|00002900| 69 6f 6e 20 20 20 20 23 | 40 28 31 30 20 32 30 29 |ion #|@(10 20)|
|00002910| 0d 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | |
|00002920| 20 3a 64 69 61 6c 6f 67 | 2d 69 74 65 6d 2d 74 65 | :dialog|-item-te|
|00002930| 78 74 20 22 64 72 61 67 | 20 26 20 64 72 6f 70 20 |xt "drag| & drop |
|00002940| 74 6f 20 65 6e 63 6f 64 | 65 22 0d 20 20 20 20 20 |to encod|e". |
|00002950| 20 20 20 20 20 20 20 20 | 20 20 20 3a 76 69 65 77 | | :view|
|00002960| 2d 6e 69 63 6b 2d 6e 61 | 6d 65 20 20 20 3a 69 31 |-nick-na|me :i1|
|00002970| 0d 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | |
|00002980| 20 3a 64 72 6f 70 2d 61 | 63 74 69 6f 6e 2d 66 6e | :drop-a|ction-fn|
|00002990| 20 20 20 27 65 6e 63 6f | 64 65 72 2d 66 6e 0d 20 | 'enco|der-fn. |
|000029a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 3a | | :|
|000029b0| 64 72 61 67 2d 62 6f 75 | 6e 64 73 20 20 20 20 20 |drag-bou|nds |
|000029c0| 20 3a 6e 6f 6e 65 0d 20 | 20 20 20 20 20 20 20 20 | :none. | |
|000029d0| 20 20 20 20 20 20 20 29 | 0d 20 20 20 20 20 20 20 | )|. |
|000029e0| 20 20 20 20 20 20 20 0d | 20 20 20 20 20 20 20 20 | .| |
|000029f0| 20 20 20 20 20 20 28 6d | 61 6b 65 2d 69 6e 73 74 | (m|ake-inst|
|00002a00| 61 6e 63 65 0d 20 20 20 | 20 20 20 20 20 20 20 20 |ance. | |
|00002a10| 20 20 20 20 20 27 72 73 | 61 2d 77 69 64 67 65 74 | 'rs|a-widget|
|00002a20| 0d 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | |
|00002a30| 20 3a 70 75 62 6c 69 63 | 2d 6b 65 79 20 70 75 62 | :public|-key pub|
|00002a40| 0d 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | |
|00002a50| 20 3a 76 69 65 77 2d 70 | 6f 73 69 74 69 6f 6e 20 | :view-p|osition |
|00002a60| 20 20 20 20 23 40 28 31 | 30 20 35 30 29 0d 20 20 | #@(1|0 50). |
|00002a70| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 3a 64 | | :d|
|00002a80| 69 61 6c 6f 67 2d 69 74 | 65 6d 2d 74 65 78 74 20 |ialog-it|em-text |
|00002a90| 22 64 72 61 67 20 26 20 | 64 72 6f 70 20 74 6f 20 |"drag & |drop to |
|00002aa0| 64 65 63 6f 64 65 22 0d | 20 20 20 20 20 20 20 20 |decode".| |
|00002ab0| 20 20 20 20 20 20 20 20 | 3a 76 69 65 77 2d 6e 69 | |:view-ni|
|00002ac0| 63 6b 2d 6e 61 6d 65 20 | 20 20 3a 69 32 0d 20 20 |ck-name | :i2. |
|00002ad0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 3a 64 | | :d|
|00002ae0| 72 6f 70 2d 61 63 74 69 | 6f 6e 2d 66 6e 20 20 20 |rop-acti|on-fn |
|00002af0| 27 64 65 63 6f 64 65 72 | 2d 66 6e 0d 20 20 20 20 |'decoder|-fn. |
|00002b00| 20 20 20 20 20 20 20 20 | 20 20 20 20 3a 64 72 61 | | :dra|
|00002b10| 67 2d 62 6f 75 6e 64 73 | 20 20 20 20 20 20 20 3a |g-bounds| :|
|00002b20| 6e 6f 6e 65 0d 20 20 20 | 20 20 20 20 20 20 20 20 |none. | |
|00002b30| 20 20 20 20 20 29 0d 0d | 20 20 20 20 20 20 20 20 | )..| |
|00002b40| 20 20 20 20 20 20 28 6d | 61 6b 65 2d 69 6e 73 74 | (m|ake-inst|
|00002b50| 61 6e 63 65 0d 20 20 20 | 20 20 20 20 20 20 20 20 |ance. | |
|00002b60| 20 20 20 20 20 27 65 64 | 69 74 61 62 6c 65 2d 74 | 'ed|itable-t|
|00002b70| 65 78 74 2d 64 69 61 6c | 6f 67 2d 69 74 65 6d 0d |ext-dial|og-item.|
|00002b80| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002b90| 3a 77 72 61 70 2d 70 20 | 20 20 20 20 20 20 20 20 |:wrap-p | |
|00002ba0| 20 20 20 20 74 0d 20 20 | 20 20 20 20 20 20 20 20 | t. | |
|00002bb0| 20 20 20 20 20 20 3a 76 | 69 65 77 2d 70 6f 73 69 | :v|iew-posi|
|00002bc0| 74 69 6f 6e 20 20 20 20 | 20 20 23 40 28 31 30 20 |tion | #@(10 |
|00002bd0| 38 30 29 0d 20 20 20 20 | 20 20 20 20 20 20 20 20 |80). | |
|00002be0| 20 20 20 20 3a 76 69 65 | 77 2d 73 69 7a 65 20 20 | :vie|w-size |
|00002bf0| 20 20 20 20 20 20 20 20 | 23 40 28 32 30 30 20 31 | |#@(200 1|
|00002c00| 30 30 29 0d 20 20 20 20 | 20 20 20 20 20 20 20 20 |00). | |
|00002c10| 20 20 20 20 3a 64 69 61 | 6c 6f 67 2d 69 74 65 6d | :dia|log-item|
|00002c20| 2d 74 65 78 74 20 20 20 | 22 49 20 73 75 72 65 20 |-text |"I sure |
|00002c30| 68 6f 70 65 20 74 68 65 | 20 4e 53 41 20 69 73 6e |hope the| NSA isn|
|00002c40| 27 74 20 77 61 74 63 68 | 69 6e 67 20 74 68 69 73 |'t watch|ing this|
|00002c50| 20 64 65 6d 6f 22 0d 20 | 20 20 20 20 20 20 20 20 | demo". | |
|00002c60| 20 20 20 20 20 20 20 29 | 29 29 29 0d 0d 7c 23 00 | )|)))..|#.|
|00002c70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002c80| 00 00 01 00 00 00 01 68 | 00 00 00 68 00 00 00 52 |.......h|...h...R|
|00002c90| 00 00 66 85 00 77 03 00 | 00 00 00 00 00 00 00 00 |..f..w..|........|
|00002ca0| 00 00 66 75 0d 77 69 6e | 64 6f 77 2d 6d 69 78 69 |..fu.win|dow-mixi|
|00002cb0| 08 52 53 41 2e 6c 69 73 | 70 00 02 00 00 00 54 45 |.RSA.lis|p.....TE|
|00002cc0| 58 54 43 43 4c 32 01 00 | 00 00 00 60 00 00 00 00 |XTCCL2..|...`....|
|00002cd0| 00 00 54 45 58 54 43 43 | 4c 32 01 00 00 00 00 60 |..TEXTCC|L2.....`|
|00002ce0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002cf0| 00 00 a6 57 13 da 00 00 | 2b ef 00 00 01 ba 66 86 |...W....|+.....f.|
|00002d00| 0d 2b 44 65 76 69 63 65 | 73 2e 6c 69 73 70 02 00 |.+Device|s.lisp..|
|00002d10| 00 00 54 45 58 54 43 43 | 4c 32 01 00 00 42 00 ed |..TEXTCC|L2...B..|
|00002d20| 00 00 00 00 66 87 00 00 | 00 00 0d c1 00 00 10 00 |....f...|........|
|00002d30| 00 00 00 00 01 ba 00 00 | 04 00 a4 96 67 0e a5 b8 |........|....g...|
|00002d40| 01 5d 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |.]......|........|
|00002d50| 00 00 00 00 00 00 00 00 | 67 d7 00 04 00 00 00 00 |........|g.......|
|00002d60| 00 00 00 00 67 db 00 01 | 00 00 00 00 00 00 00 00 |....g...|........|
|00002d70| 00 00 00 00 11 00 00 00 | 66 86 0b 2b 46 69 6c 65 |........|f..+File|
|00002d80| 00 00 00 0a 00 01 00 16 | 0a 00 01 00 00 00 00 00 |........|........|
|00002d90| 00 0a 7f ff 07 43 6f 75 | 72 69 65 72 00 00 00 48 |.....Cou|rier...H|
|00002da0| 00 0a 43 6f 75 72 69 65 | 72 00 00 00 00 00 00 00 |..Courie|r.......|
|00002db0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002dc0| 00 00 00 06 00 08 00 2c | 00 06 02 c7 02 5d 00 2c |.......,|.....].,|
|00002dd0| 00 06 02 c7 02 5d 00 00 | 00 00 00 00 23 0e 00 00 |.....]..|....#...|
|00002de0| 23 0e 00 00 1f e4 01 00 | 00 00 01 00 00 00 01 68 |#.......|.......h|
|00002df0| 00 00 00 68 00 00 00 52 | 00 dd a3 48 12 bc 00 00 |...h...R|...H....|
|00002e00| 00 1c 00 52 00 01 46 52 | 45 44 00 01 00 12 4d 50 |...R..FR|ED....MP|
|00002e10| 53 52 00 00 00 2a 00 02 | ff ff 00 00 00 00 00 00 |SR...*..|........|
|00002e20| 00 00 00 03 ff ff 00 00 | 00 0e 00 00 00 00 03 ed |........|........|
|00002e30| ff ff 00 00 00 1c 00 de | a7 3c 00 00 00 00 00 00 |........|.<......|
|00002e40| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002e50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002e60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00002e70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
+--------+-------------------------+-------------------------+--------+--------+